package hzk.codex2016.exam;

import java.util.ArrayList;
import java.io.*;
import java.util.*;

/**
 * 优惠券
 */
abstract class Coupon{
	
	private double threshold;
	
	abstract double getDiscount(Order order);

	public double getThreshold() {return threshold;} 
}
/**
 * “红包”
 */
class RedPacket extends Coupon{
	
	double fixedDiscount;
	@Override
	double getDiscount(Order order) {
		return fixedDiscount;
	}
	
}
/**
 * “满包邮”
 */
class FreePostage extends Coupon{
	@Override
	double getDiscount(Order order) {
		return order.getPostage();
	}
	
}

class Order{
	double orgPrice;	//购物车提交后生成的订单原价（已包含多个商品）
	double postage;		//购物车提交后生成的订单邮费

	
	double getPostage(){ return postage;}
	List<Coupon> coupons;	//该订单适用的优惠券
	/**
	 * 找出推荐的优惠方案（折扣最多的）
	 * @return
	 */
	Coupon findBestCoupon(){
		
		//计算出优惠最大的优惠券
		Coupon bestCoupon=null;
		for (Coupon cou:coupons){
			if (orgPrice<cou.getThreshold()) continue;
			if (bestCoupon!=null && cou.getDiscount(this)>bestCoupon.getDiscount(this)){
				bestCoupon=cou;
			}
		}
		
		return bestCoupon;
		
		
	}
	
}
public class AliExam160420P2 {
	//处理主程序
	
	
	public static void main(String[] args) {

	}

}
 